home *** CD-ROM | disk | FTP | other *** search
/ Aminet 41 / Aminet 41 (2001)(Schatztruhe)[!][Feb 2001].iso / Aminet / dev / basic / clockita.lha / Orologio.text < prev    next >
Encoding:
Text File  |  2000-05-21  |  22.4 KB  |  882 lines

  1. ;-> Orologio by Stefano Regattin
  2. ;d> 9 ottobre 1998 da Clock
  3. ;m> 10,11,16,17,19,24,29 ottobre 1998
  4. ;m> 4,6 novembre 1998
  5. ;m> 13,14,23 dicembre 1998
  6. ;m> 3 gennaio 1999
  7. ;m> 9,12 marzo 1999
  8. ;m> 25,26 settembre 1999
  9. ;m> 1,2,3,5,6,7,8,9,10,11,22,27,28 febbraio 2000
  10. ;m> 2,3,4,6,9,10,30,31 marzo 2000
  11. ;m> 6,9,16,25,30 aprile 2000
  12. ;m> 1,7,9,21 maggio 2000
  13. ;------------------------
  14. #HaiCambiatoLeDimensioniDellaFinestra=2
  15. #HaiPremutoUnTastoDelTopo=8
  16. #HaiRilasciatoUnGadget=$40
  17. #HaiChiusoLaFinestra=$200
  18.  
  19. DEFTYPE .l RastPortFinestra
  20.  
  21. DEFTYPE .b AltezzaFont,AltezzaFontRegistrata
  22. DEFTYPE .b NumeroToolType,StatoAllarme,ToolTypeScritti
  23.  
  24. DEFTYPE .w
  25.  
  26. Statement AggiustaDimensioniFinestraZero{}
  27. SHARED Angolo$
  28. SHARED LunXFinestraZero
  29. SHARED LunXSchermo
  30. SHARED LunYFinestraZero
  31. SHARED PosXFinestraZero
  32. SHARED PosXFinestraZeroAngoloOpposto
  33. SHARED PosYFinestraZero
  34. SHARED PosYFinestraZeroAngoloOpposto
  35.  Select Angolo$
  36.  Case "TOP-RIGHT"
  37.   If PosXFinestraZero+(LunXFinestraZero-1)<>PosXFinestraZeroAngoloOpposto
  38.    PosXFinestraZero=PosXFinestraZeroAngoloOpposto-(LunXFinestraZero-1)
  39.   EndIf
  40.  Case "BOTTOM-RIGHT"
  41.   If PosXFinestraZero+(LunXFinestraZero-1)<>PosXFinestraZeroAngoloOpposto
  42.    PosXFinestraZero=PosXFinestraZeroAngoloOpposto-(LunXFinestraZero-1)
  43.   EndIf
  44.  
  45.   If PosYFinestraZero+(LunYFinestraZero-1)<>PosYFinestraZeroAngoloOpposto
  46.    PosYFinestraZero=PosYFinestraZeroAngoloOpposto-(LunYFinestraZero-1)
  47.   EndIf
  48.  Case "BOTTOM-LEFT"
  49.   If PosYFinestraZero+(LunYFinestraZero-1)<>PosYFinestraZeroAngoloOpposto
  50.    PosYFinestraZero=PosYFinestraZeroAngoloOpposto-(LunYFinestraZero-1)
  51.   EndIf
  52.  End Select
  53.  
  54.  If LunXFinestraZero>LunXSchermo Then LunXFinestraZero=LunXSchermo
  55.  If PosXFinestraZero+LunXFinestraZero-1>LunXSchermo Then PosXFinestraZero=LunXSchermo-LunXFinestraZero
  56.  If PosXFinestraZero<0 Then PosXFinestraZero=0
  57.  If LunYFinestraZero>WBHeight Then LunYFinestraZero=WBHeight
  58.  If PosYFinestraZero+LunYFinestraZero-1>WBHeight Then PosYFinestraZero=WBHeight-LunYFinestraZero
  59.  If PosYFinestraZero<AltezzaFontSchermo+3 Then PosYFinestraZero=AltezzaFontSchermo+3
  60. End Statement
  61.  
  62. Statement ApriFinestraZero{}
  63. SHARED ColoreSfondo
  64. SHARED LunXFinestraZero
  65. SHARED LunYFinestraZero
  66. SHARED PosXFinestraZero
  67. SHARED PosYFinestraZero
  68. SHARED RastPortFinestra
  69.  Window 0,PosXFinestraZero,PosYFinestraZero,LunXFinestraZero,LunYFinestraZero,$40F,"",1,2
  70.  WTitle "Orologio","by Stefano Regattin e-mail->stefano.regattin@tin.it"
  71.  RastPortFinestra=RastPort(0)
  72.  WindowFont 0
  73.  Menus Off
  74.  WCls ColoreSfondo
  75. End Statement
  76.  
  77. Statement LeggiToolType{}
  78. SHARED Angolo$
  79. SHARED AngoloRegistrato$
  80. SHARED ColoreSfondo
  81. SHARED ColoreSfondoRegistrato
  82. SHARED ColoreTesto
  83. SHARED ColoreTestoRegistrato
  84. SHARED FontOrologio$
  85. SHARED FontOrologioRegistrato$
  86. SHARED IconaOrologio$
  87. SHARED AltezzaFont
  88. SHARED AltezzaFontRegistrata
  89. SHARED PosXFinestraZero
  90. SHARED PosXFinestraZeroRegistrata
  91. SHARED PosYFinestraZero
  92. SHARED PosYFinestraZeroRegistrata
  93.  ToolTypeLetti.l=GetIconObject(IconaOrologio$)
  94.  If ToolTypeLetti>0
  95.   NuovoFontOrologio$=FindToolValue("FONTNAME")
  96.   NuovaAltezzaFont$=FindToolValue("FONTSIZE")
  97.   NuovaPosXFinestraZero$=FindToolValue("WINDOWX")
  98.   NuovaPosYFinestraZero$=FindToolValue("WINDOWY")
  99.   NuovoAngolo$=FindToolValue("ANGLE")
  100.   NuovoColoreTesto$=FindToolValue("TEXTCOLOR")
  101.   NuovoColoreSfondo$=FindToolValue("BACKCOLOR")
  102.  
  103.   If NuovoFontOrologio$<>""
  104.    FontOrologioRegistrato$=NuovoFontOrologio$
  105.    FontOrologio$=NuovoFontOrologio$
  106.   EndIf
  107.  
  108.   If NuovaAltezzaFont$<>""
  109.    AltezzaFontRegistrata=Val(NuovaAltezzaFont$)
  110.    AltezzaFont=Val(NuovaAltezzaFont$)
  111.   EndIf
  112.  
  113.   If NuovaPosXFinestraZero$<>""
  114.    PosXFinestraZeroRegistrata=Val(NuovaPosXFinestraZero$)
  115.    PosXFinestraZero=Val(NuovaPosXFinestraZero$)
  116.   EndIf
  117.  
  118.   If NuovaPosYFinestraZero$<>""
  119.    PosYFinestraZeroRegistrata=Val(NuovaPosYFinestraZero$)
  120.    PosYFinestraZero=Val(NuovaPosYFinestraZero$)
  121.   EndIf
  122.  
  123.   If NuovoAngolo$<>""
  124.    AngoloRegistrato$=NuovoAngolo$
  125.    Angolo$=NuovoAngolo$
  126.   EndIf
  127.  
  128.   If NuovoColoreTesto$<>""
  129.    ColoreTestoRegistrato=Val(NuovoColoreTesto$)
  130.    ColoreTesto=Val(NuovoColoreTesto$)
  131.   EndIf
  132.  
  133.   If NuovoColoreSfondo$<>""
  134.    ColoreSfondoRegistrato=Val(NuovoColoreSfondo$)
  135.    ColoreSfondo=Val(NuovoColoreSfondo$)
  136.   EndIf
  137.  
  138.   FreeIconObject
  139.  
  140.  EndIf
  141. End Statement
  142.  
  143. Statement ScriviToolType{}
  144. SHARED Angolo$
  145. SHARED AngoloRegistrato$
  146. SHARED ColoreSfondo
  147. SHARED ColoreSfondoRegistrato
  148. SHARED ColoreTesto
  149. SHARED ColoreTestoRegistrato
  150. SHARED FontOrologio$
  151. SHARED FontOrologioRegistrato$
  152. SHARED IconaOrologio$
  153. SHARED AltezzaFont
  154. SHARED AltezzaFontRegistrata
  155. SHARED PosXFinestraZero
  156. SHARED PosXFinestraZeroAngoloOpposto
  157. SHARED PosXFinestraZeroRegistrata
  158. SHARED PosYFinestraZero
  159. SHARED PosYFinestraZeroAngoloOpposto
  160. SHARED PosYFinestraZeroRegistrata
  161. SHARED ToolTypeScritti
  162.  ToolTypeLetti.l=GetIconObject(IconaOrologio$)
  163.  If ToolTypeLetti>0
  164.   If FindToolType("DONOTWAIT")=False Then NewToolType "DONOTWAIT",""
  165.  
  166.   If FindToolType("FONTNAME")=True
  167.    SetToolValue "FONTNAME",FontOrologio$
  168.   Else
  169.    NewToolType "FONTNAME",FontOrologio$
  170.   EndIf
  171.  
  172.   If FindToolType("FONTSIZE")=True
  173.    SetToolValue "FONTSIZE",Str$(AltezzaFont)
  174.   Else
  175.    NewToolType "FONTSIZE",Str$(AltezzaFont)
  176.   EndIf
  177.  
  178.   Select Angolo$
  179.   Case "TOP-LEFT"
  180.    If FindToolType("WINDOWX")=True
  181.     SetToolValue "WINDOWX",Str$(PosXFinestraZero)
  182.    Else
  183.     NewToolType "WINDOWX",Str$(PosXFinestraZero)
  184.    EndIf
  185.  
  186.    If FindToolType("WINDOWY")=True
  187.     SetToolValue "WINDOWY",Str$(PosYFinestraZero)
  188.    Else
  189.     NewToolType "WINDOWY",Str$(PosYFinestraZero)
  190.    EndIf
  191.   Case "TOP-RIGHT"
  192.    If FindToolType("WINDOWX")=True
  193.     SetToolValue "WINDOWX",Str$(PosXFinestraZeroAngoloOpposto)
  194.    Else
  195.     NewToolType "WINDOWX",Str$(PosXFinestraZeroAngoloOpposto)
  196.    EndIf
  197.  
  198.    If FindToolType("WINDOWY")=True
  199.     SetToolValue "WINDOWY",Str$(PosYFinestraZero)
  200.    Else
  201.     NewToolType "WINDOWY",Str$(PosYFinestraZero)
  202.    EndIf
  203.   Case "BOTTOM-RIGHT"
  204.    If FindToolType("WINDOWX")=True
  205.     SetToolValue "WINDOWX",Str$(PosXFinestraZeroAngoloOpposto)
  206.    Else
  207.     NewToolType "WINDOWX",Str$(PosXFinestraZeroAngoloOpposto)
  208.    EndIf
  209.  
  210.    If FindToolType("WINDOWY")=True
  211.     SetToolValue "WINDOWY",Str$(PosYFinestraZeroAngoloOpposto)
  212.    Else
  213.     NewToolType "WINDOWY",Str$(PosYFinestraZeroAngoloOpposto)
  214.    EndIf
  215.   Case "BOTTOM-LEFT"
  216.    If FindToolType("WINDOWX")=True
  217.     SetToolValue "WINDOWX",Str$(PosXFinestraZero)
  218.    Else
  219.     NewToolType "WINDOWX",Str$(PosXFinestraZero)
  220.    EndIf
  221.  
  222.    If FindToolType("WINDOWY")=True
  223.     SetToolValue "WINDOWY",Str$(PosYFinestraZeroAngoloOpposto)
  224.    Else
  225.     NewToolType "WINDOWY",Str$(PosYFinestraZeroAngoloOpposto)
  226.    EndIf
  227.   End Select
  228.  
  229.   If FindToolType("ANGLE")=True
  230.    SetToolValue "ANGLE",Angolo$
  231.   Else
  232.    NewToolType "ANGLE",Angolo$
  233.   EndIf
  234.  
  235.   If FindToolType("TEXTCOLOR")=True
  236.    SetToolValue "TEXTCOLOR",Str$(ColoreTesto)
  237.   Else
  238.    NewToolType "TEXTCOLOR",Str$(ColoreTesto)
  239.   EndIf
  240.  
  241.   If FindToolType("BACKCOLOR")=True
  242.    SetToolValue "BACKCOLOR",Str$(ColoreSfondo)
  243.   Else
  244.    NewToolType "BACKCOLOR",Str$(ColoreSfondo)
  245.   EndIf
  246.  
  247.   ToolTypeScritti=PutIconObject(IconaOrologio$)
  248.   If ToolTypeScritti=True
  249.    FontOrologioRegistrato$=FontOrologio$
  250.    AltezzaFontRegistrata=AltezzaFont
  251.    AngoloRegistrato$=Angolo$
  252.    Select Angolo$
  253.    Case "TOP-LEFT"
  254.     PosXFinestraZeroRegistrata=PosXFinestraZero
  255.     PosYFinestraZeroRegistrata=PosYFinestraZero
  256.    Case "TOP-RIGHT"
  257.     PosXFinestraZeroRegistrata=PosXFinestraZeroAngoloOpposto
  258.     PosYFinestraZeroRegistrata=PosYFinestraZero
  259.    Case "BOTTOM-RIGHT"
  260.     PosXFinestraZeroRegistrata=PosXFinestraZeroAngoloOpposto
  261.     PosYFinestraZeroRegistrata=PosYFinestraZeroAngoloOpposto
  262.    Case "BOTTOM-LEFT"
  263.     PosXFinestraZeroRegistrata=PosXFinestraZeroAngolo
  264.     PosYFinestraZeroRegistrata=PosYFinestraZeroAngoloOpposto
  265.    End Select
  266.    ColoreTestoRegistrato=ColoreTesto
  267.    ColoreSfondoRegistrato=ColoreSfondo
  268.   EndIf
  269.  
  270.   FreeIconObject
  271.  
  272.  EndIf
  273. End Statement
  274.  
  275. Statement CercaFont{}
  276. SHARED FontOrologio$
  277. SHARED AltezzaFont
  278.  NEWTYPE .FontInfo
  279.   Nome$
  280.   Altezza.w
  281.   Stile.b
  282.   Segnalatori
  283.   PennaUno
  284.   PennaDue
  285.   ModoDisegno
  286.   Pad
  287.  End NEWTYPE
  288.  
  289.  *Font.FontInfo=ASLFontRequest(0)
  290.  
  291.  If *Font<>0
  292.   FontOrologio$=*Font\Nome
  293.   AltezzaFont=*Font\Altezza
  294.  EndIf
  295. End Statement
  296.  
  297. Statement CambiaColori{}
  298. SHARED ColoreSfondo
  299. SHARED ColoreTesto
  300. SHARED LunXSchermo
  301.  ColoriWB=2^WBDepth
  302.  SpazioColori=Max(ColoriWB/16,1)*8
  303.  PosXFinestraDue=WindowX
  304.  PosYFinestraDue=WindowY
  305.  LunXFinestraDue=WLeftOff+16*8+4
  306.  LunYFinestraDue=WTopOff+SpazioColori+1+13+12+4
  307.  
  308.  If PosXFinestraDue+LunXFinestraDue>LunXSchermo Then PosXFinestraDue=LunXSchermo-LunXFinestraDue
  309.  If PosYFinestraDue+LunYFinestraDue>WBHeight Then PosYFinestraDue=WBHeight-LunYFinestraDue
  310.  
  311.  Window 2,PosXFinestraDue,PosYFinestraDue,LunXFinestraDue,LunYFinestraDue,$140E,"",-1,-1,1
  312.  WTitle "Colori","Cambia i colori dell'orologio"
  313.  WindowFont 1
  314.  Menus Off
  315.  
  316.  GadgetBorder 2,SpazioColori+3,122,8
  317.  GadgetBorder 2,SpazioColori+16,122,8
  318.  
  319.  For Colore=0 To ColoriWB-1
  320.   XColore=(Colore MOD 16)*8
  321.   YColore=(Colore/16)*8
  322.   WBox XColore,YColore,XColore+7,YColore+7,Colore
  323.  Next
  324.  
  325.  Repeat
  326.   WBox 2,SpazioColori+3,124,SpazioColori+10,ColoreTesto
  327.   WBox 2,SpazioColori+16,124,SpazioColori+23,ColoreSfondo
  328.  
  329.   EventoFinestraDue.l=WaitEvent
  330.  
  331.   Select EventoFinestraDue
  332.   Case #HaiPremutoUnTastoDelTopo
  333.    If WMouseY<SpazioColori
  334.     Colore=WMouseY/8*16+WMouseX/8
  335.     Select MButtons
  336.     Case 1
  337.      If Colore<>ColoreSfondo Then ColoreTesto=Colore
  338.     Case 2
  339.      If Colore<>ColoreTesto Then ColoreSfondo=Colore
  340.     End Select
  341.    EndIf
  342.   End Select
  343.  Until EventoFinestraDue=#HaiChiusoLaFinestra
  344.  CloseWindow 2
  345.  Use Window 1
  346. End Statement
  347.  
  348. Statement Impostazioni{}
  349. SHARED Angolo$
  350. SHARED AngoloRegistrato$
  351. SHARED ColoreSfondo
  352. SHARED ColoreSfondoRegistrato
  353. SHARED ColoreTesto
  354. SHARED ColoreTestoRegistrato
  355. SHARED OraAllarme$
  356. SHARED OraDiOggi$
  357. SHARED FontOrologio$
  358. SHARED FontOrologioRegistrato$
  359. SHARED AltezzaFont
  360. SHARED AltezzaFontRegistrata
  361. SHARED LunXFinestraZero
  362. SHARED LunYFinestraZero
  363. SHARED LunXSchermo
  364. SHARED PosXFinestraZero
  365. SHARED PosXFinestraZeroAngoloOpposto
  366. SHARED PosXFinestraZeroRegistrata
  367. SHARED PosYFinestraZero
  368. SHARED PosYFinestraZeroAngoloOpposto
  369. SHARED PosYFinestraZeroRegistrata
  370. SHARED StatoAllarme
  371. SHARED ToolTypeScritti
  372.  Dim Freccia(5)
  373.  BitMap 0,32,16,2
  374.  Freccia(0)=0:Freccia(1)=0
  375.  Freccia(2)=7:Freccia(3)=0
  376.  Freccia(4)=0:Freccia(5)=7
  377.  Polyf 3,&Freccia(0),1
  378.  GetaShape 0,0,0,8,8
  379.  XFlip 0
  380.  Blit 0,8,0
  381.  GetaShape 0,0,0,8,8
  382.  GetaShape 1,8,0,8,8
  383.  YFlip 1
  384.  Blit 1,16,0
  385.  GetaShape 1,8,0,8,8
  386.  GetaShape 2,16,0,8,8
  387.  XFlip 2
  388.  Blit 2,24,0
  389.  GetaShape 2,16,0,8,8
  390.  GetaShape 3,24,0,8,8
  391.  Freccia(0)=0:Freccia(1)=8
  392.  Freccia(2)=7:Freccia(3)=8
  393.  Freccia(4)=0:Freccia(5)=15
  394.  Polyf 3,&Freccia(0),2
  395.  GetaShape 4,0,8,8,8
  396.  XFlip 4
  397.  Blit 4,8,8
  398.  GetaShape 4,0,8,8,8
  399.  GetaShape 5,8,8,8,8
  400.  YFlip 5
  401.  Blit 5,16,8
  402.  GetaShape 5,8,8,8,8
  403.  GetaShape 6,16,8,8,8
  404.  XFlip 6
  405.  Blit 6,24,8
  406.  GetaShape 6,16,8,8,8
  407.  GetaShape 7,24,8,8,8
  408.  
  409.  Free BitMap 0
  410.  
  411.  Use IntuiFont 1
  412.  StringGadget 0,  1, 1,  0, 0,6,6*8
  413.  StringGadget 0,  1,14,  0, 1,25,106
  414.  StringGadget 0, 75, 1,  0, 2,4,4*8
  415.  StringGadget 0,  9,27,  0, 3,5,5*8
  416.  StringGadget 0, 67,27,  0, 4,5,5*8
  417.  StringGadget 0,  9,62,  0, 5,5,5*8
  418.  StringGadget 0, 67,62,  0, 6,5,5*8
  419.  ShapeGadget  0, 92,42,512, 7,0,4
  420.  ShapeGadget  0,103,42,512, 8,1,5
  421.  ShapeGadget  0,103,51,512, 9,2,6
  422.  ShapeGadget  0, 92,51,512,10,3,7
  423.  TextGadget   0, 58, 1,  1,11,"A"
  424.  TextGadget   0,  1,75,  0,12,"    Colori   "
  425.  TextGadget   0,  1,87,  1,13,"*** Salva ***"
  426.  
  427.  PosXFinestraZero=WindowX-WLeftOff
  428.  PosYFinestraZero=WindowY-WTopOff
  429.  PosXFinestraZeroAngoloOpposto=PosXFinestraZero+(LunXFinestraZero-1)
  430.  PosYFinestraZeroAngoloOpposto=PosYFinestraZero+(LunYFinestraZero-1)
  431.  
  432.  PosXFinestraUno=WindowX
  433.  PosYFinestraUno=WindowY
  434.  LunXFinestraUno=124
  435.  LunYFinestraUno=WTopOff+105
  436.  
  437.  If PosXFinestraUno+LunXFinestraUno>LunXSchermo Then PosXFinestraUno=LunXSchermo-LunXFinestraUno
  438.  If PosYFinestraUno+LunYFinestraUno>WBHeight Then PosYFinestraUno=WBHeight-LunYFinestraUno
  439.  
  440.  Window 1,PosXFinestraUno,PosYFinestraUno,LunXFinestraUno,LunYFinestraUno,$140E,"",-1,-1,0
  441.  WTitle "Parametri","Imposta i parametri dell'orologio"
  442.  WColour 1,0
  443.  WindowFont 1
  444.  Menus Off
  445.  
  446.  GadgetBorder 92,42,19,17
  447.  WLocate  0,29:Print "X"
  448.  WLocate 58,29:Print "Y"
  449.  WLocate  1,43:Print"Angolo"
  450.  WLocate 40,52:Print"fisso>"
  451.  WLocate  0,64:Print "X"
  452.  WLocate 58,64:Print "Y"
  453.  
  454.  Toggle 0,11,StatoAllarme
  455.  Redraw 1,11
  456.  
  457.  Select Angolo$
  458.  Case "TOP-LEFT"
  459.   Enable  0,3
  460.   Enable  0,4
  461.   Disable 0,5
  462.   Disable 0,6
  463.   Toggle  0,7,On
  464.   Redraw 1,7
  465.  Case "TOP-RIGHT"
  466.   Enable  0,3
  467.   Disable 0,4
  468.   Disable 0,5
  469.   Enable  0,6
  470.   Toggle  0,8,On
  471.   Redraw 1,8
  472.  Case "BOTTOM-RIGHT"
  473.   Disable 0,3
  474.   Disable 0,4
  475.   Enable  0,5
  476.   Enable  0,6
  477.   Toggle  0,9,On
  478.   Redraw 1,9
  479.  Case "BOTTOM-LEFT"
  480.   Disable 0,3
  481.   Enable  0,4
  482.   Enable  0,5
  483.   Disable 0,6
  484.   Toggle  0,10,On
  485.   Redraw 1,10
  486.  End Select
  487.  
  488.  Redraw 1,3
  489.  Redraw 1,4
  490.  Redraw 1,5
  491.  Redraw 1,6
  492.  
  493.  If OraAllarme$="" Then OraAllarme$=UnLeft$(OraDiOggi$,3)
  494.  
  495.  Repeat
  496.   SetString 0,0,OraAllarme$
  497.   Redraw 1,0
  498.   SetString 0,1,FontOrologio$
  499.   Redraw 1,1
  500.   SetString 0,2,Str$(AltezzaFont)
  501.   Redraw 1,2
  502.   SetString 0,3,Str$(PosXFinestraZero)
  503.   Redraw 1,3
  504.   SetString 0,4,Str$(PosYFinestraZero)
  505.   Redraw 1,4
  506.   SetString 0,5,Str$(PosXFinestraZeroAngoloOpposto)
  507.   Redraw 1,5
  508.   SetString 0,6,Str$(PosYFinestraZeroAngoloOpposto)
  509.   Redraw 1,6
  510.  
  511.   ValoriCambiati.b=False
  512.   If FontOrologio$<>FontOrologioRegistrato$ Then ValoriCambiati=True
  513.   If AltezzaFont<>AltezzaFontRegistrata Then ValoriCambiati=True
  514.   Select Angolo$
  515.   Case "TOP-LEFT"
  516.    If PosXFinestraZero<>PosXFinestraZeroRegistrata Then ValoriCambiati=True
  517.    If PosYFinestraZero<>PosYFinestraZeroRegistrata Then ValoriCambiati=True
  518.   Case "TOP-RIGHT"
  519.    If PosXFinestraZero+(LunXFinestraZero-1)<>PosXFinestraZeroRegistrata Then ValoriCambiati=True
  520.    If PosYFinestraZero<>PosYFinestraZeroRegistrata Then ValoriCambiati=True
  521.   Case "BOTTOM-RIGHT"
  522.    If PosXFinestraZero+(LunXFinestraZero-1)<>PosXFinestraZeroRegistrata Then ValoriCambiati=True
  523.    If PosYFinestraZero+(LunYFinestraZero-1)<>PosYFinestraZeroRegistrata Then ValoriCambiati=True
  524.   Case "BOTTOM-LEFT"
  525.    If PosXFinestraZero<>PosXFinestraZeroRegistrata Then ValoriCambiati=True
  526.    If PosYFinestraZero+(LunYFinestraZero-1)<>PosYFinestraZeroRegistrata Then ValoriCambiati=True
  527.   End Select
  528.   If Angolo$<>AngoloRegistrato$ Then ValoriCambiati=True
  529.   If ColoreTesto<>ColoreTestoRegistrato Then ValoriCambiati=True
  530.   If ColoreSfondo<>ColoreSfondoRegistrato Then ValoriCambiati=True
  531.   If ValoriCambiati=True Then Enable 0,13 Else Toggle 0,13,Off:Disable 0,13
  532.   Redraw 1,13
  533.  
  534.   EventoFinestraUno.l=WaitEvent
  535.  
  536.   Select EventoFinestraUno
  537.   Case #HaiRilasciatoUnGadget
  538.    If GadgetHit<7 Then ActivateString 1,GadgetHit
  539.    Select GadgetHit
  540.    Case 0
  541.     OraAllarme$=StringText$(0,0)
  542.    Case 1
  543.     NuovoFontOrologio$=StringText$(0,1)
  544.     If NuovoFontOrologio$="" Then CercaFont{}
  545.     If Right$(NuovoFontOrologio$,5)<>".font" Then NuovoFontOrologio$+".font"
  546.     If Len(NuovoFontOrologio$)>0
  547.      If Exists("FONTS:"+NuovoFontOrologio$)
  548.       FontOrologio$=NuovoFontOrologio$
  549.      EndIf
  550.     EndIf
  551.    Case 2
  552.     AltezzaFont=Val(StringText$(0,2))
  553.     AltezzaFont=Max(AltezzaFont,6)
  554.    Case 3
  555.     PosXFinestraZero=Val(StringText$(0,3))
  556.    Case 4
  557.     PosYFinestraZero=Val(StringText$(0,4))
  558.    Case 5
  559.     PosXFinestraZeroAngoloOpposto=Val(StringText$(0,5))
  560.    Case 6
  561.     PosYFinestraZeroAngoloOpposto=Val(StringText$(0,6))
  562.    Case 7
  563.     If GadgetStatus(0,7)=True Then Angolo$="TOP-LEFT"
  564.    Case 8
  565.     If GadgetStatus(0,8)=True Then Angolo$="TOP-RIGHT"
  566.    Case 9
  567.     If GadgetStatus(0,9)=True Then Angolo$="BOTTOM-RIGHT"
  568.    Case 10
  569.     If GadgetStatus(0,10)=True Then Angolo$="BOTTOM-LEFT"
  570.    Case 11
  571.     StatoAllarme=GadgetStatus(0,11)
  572.    Case 12
  573.     CambiaColori{}
  574.     Toggle 0,12,Off
  575.    Case 13
  576.     ScriviToolType{}
  577.     If ToolTypeScritti=True
  578.      Toggle 0,13,Off
  579.      Disable 0,13
  580.      Redraw 1,13
  581.     Else
  582.      Toggle 0,13,On
  583.     EndIf
  584.    End Select
  585.  
  586.    Select Angolo$
  587.    Case "TOP-LEFT"
  588.     PosXFinestraZeroAngoloOpposto=PosXFinestraZero+(LunXFinestraZero-1)
  589.     PosYFinestraZeroAngoloOpposto=PosYFinestraZero+(LunYFinestraZero-1)
  590.     Enable  0,3
  591.     Enable  0,4
  592.     Disable 0,5
  593.     Disable 0,6
  594.    Case "TOP-RIGHT"
  595.     PosXFinestraZero=PosXFinestraZeroAngoloOpposto-(LunXFinestraZero-1)
  596.     PosYFinestraZeroAngoloOpposto=PosYFinestraZero+(LunYFinestraZero-1)
  597.     Disable 0,3
  598.     Enable  0,4
  599.     Enable  0,5
  600.     Disable 0,6
  601.    Case "BOTTOM-RIGHT"
  602.     PosXFinestraZero=PosXFinestraZeroAngoloOpposto-(LunXFinestraZero-1)
  603.     PosYFinestraZero=PosYFinestraZeroAngoloOpposto-(LunYFinestraZero-1)
  604.     Disable 0,3
  605.     Disable 0,4
  606.     Enable  0,5
  607.     Enable  0,6
  608.    Case "BOTTOM-LEFT"
  609.     PosXFinestraZeroAngoloOpposto=PosXFinestraZero+(LunXFinestraZero-1)
  610.     PosYFinestraZero=PosYFinestraZeroAngoloOpposto-(LunYFinestraZero-1)
  611.     Enable  0,3
  612.     Disable 0,4
  613.     Disable 0,5
  614.     Enable  0,6
  615.    End Select
  616.  
  617.   End Select
  618.  Until EventoFinestraUno=#HaiChiusoLaFinestra
  619.  CloseWindow 1
  620.  Use Window 0
  621. End Statement
  622.  
  623. Statement DataDiOggi{}
  624. SHARED Allarme$
  625. SHARED DataDiOggi$
  626. SHARED LunghezzaDataDiOggi
  627. SHARED LunghezzaScrittaAllarme
  628. SHARED RastPortFinestra
  629.  Select WeekDay
  630.  Case 0
  631.   GiornoDellaSettimana$="Dom"
  632.  Case 1
  633.   GiornoDellaSettimana$="Lun"
  634.  Case 2
  635.   GiornoDellaSettimana$="Mar"
  636.  Case 3
  637.   GiornoDellaSettimana$="Mer"
  638.  Case 4
  639.   GiornoDellaSettimana$="Gio"
  640.  Case 5
  641.   GiornoDellaSettimana$="Ven"
  642.  Case 6
  643.   GiornoDellaSettimana$="Sab"
  644.  End Select
  645.  Giorno$=Str$(Days)
  646.  Select Months
  647.  Case 1
  648.   Mese$="gennaio"
  649.  Case 2
  650.   Mese$="febbraio"
  651.  Case 3
  652.   Mese$="marzo"
  653.  Case 4
  654.   Mese$="aprile"
  655.  Case 5
  656.   Mese$="maggio"
  657.  Case 6
  658.   Mese$="giugno"
  659.  Case 7
  660.   Mese$="luglio"
  661.  Case 8
  662.   Mese$="agosto"
  663.  Case 9
  664.   Mese$="settembre"
  665.  Case 10
  666.   Mese$="ottobre"
  667.  Case 11
  668.   Mese$="novembre"
  669.  Case 12
  670.   Mese$="dicembre"
  671.  End Select
  672.  Anno$=Str$(Years)
  673.  DataDiOggi$=" "+GiornoDellaSettimana$+", "+Giorno$+" "+Mese$+" "+Anno$+" "
  674.  LunghezzaDataDiOggi.w=TextLength_(RastPortFinestra,&DataDiOggi$,Len(DataDiOggi$))
  675. End Statement
  676.  
  677. ;*********************************************
  678. ;Fine delle procedure ed inizio del programma
  679. ;Procedures end and program start
  680. ;*********************************
  681.  
  682. WBStartup
  683.  
  684. WbToScreen 0
  685.  
  686. IndirizzoSchermo.l=Peek.l(Addr Screen(0))
  687. LunXSchermo=Peek.w(IndirizzoSchermo+12)
  688.  
  689. FontOrologio$="Data70.font"
  690. AltezzaFont=13
  691.  
  692. AltezzaFontSchermo.b=8
  693. OpenFontPrefs
  694.  AltezzaFontSchermo.b=DefaultFontHeight(2)
  695. CloseFontPrefs
  696.  
  697. IconaOrologio$=ProgPath$+".info"
  698.  
  699. PosXFinestraZero=0
  700. PosYFinestraZero=AltezzaFontSchermo+3
  701. LunXFinestraZero=70
  702. LunYFinestraZero=30
  703. Angolo$="TOP-LEFT"
  704. ColoreTesto=1
  705. ColoreSfondo=0
  706.  
  707. LeggiToolType{}
  708.  
  709. LoadFont 0,FontOrologio$,AltezzaFont
  710.  
  711. LoadFont 1,"topaz.font",8
  712.  
  713. Select Angolo$
  714. Case "TOP-RIGHT"
  715.  PosXFinestraZeroAngoloOpposto=PosXFinestraZero
  716.  PosXFinestraZero-(LunXFinestraZero-1)
  717. Case "BOTTOM-RIGHT"
  718.  PosXFinestraZeroAngoloOpposto=PosXFinestraZero
  719.  PosXFinestraZero-(LunXFinestraZero-1)
  720.  PosYFinestraZeroAngoloOpposto=PosYFinestraZero
  721.  PosYFinestraZero-(LunYFinestraZero-1)
  722. Case "BOTTOM-LEFT"
  723.  PosYFinestraZeroAngoloOpposto=PosYFinestraZero
  724.  PosYFinestraZero-(LunYFinestraZero-1)
  725. End Select
  726.  
  727. AggiustaDimensioniFinestraZero{}
  728.  
  729. ApriFinestraZero{}
  730.  
  731. DataDiOggi$=Date$(SystemDate)
  732. DataDiOggi{}
  733.  
  734. LunXFinestraZero=WLeftOff+LunghezzaDataDiOggi+WTopOff+4
  735. LunYFinestraZero=WTopOff+AltezzaFont*2+4
  736.  
  737. Select Angolo$
  738. Case "TOP-LEFT"
  739.  PosXFinestraZeroAngoloOpposto=PosXFinestraZero+(LunXFinestraZero-1)
  740.  PosYFinestraZeroAngoloOpposto=PosYFinestraZero+(LunYFinestraZero-1)
  741. Case "TOP-RIGHT"
  742.  PosXFinestraZero=PosXFinestraZeroAngoloOpposto
  743.  PosXFinestraZero-(LunXFinestraZero-1)
  744.  PosYFinestraZeroAngoloOpposto=PosYFinestraZero+(LunYFinestraZero-1)
  745. Case "BOTTOM-RIGHT"
  746.  PosXFinestraZero=PosXFinestraZeroAngoloOpposto
  747.  PosXFinestraZero-(LunXFinestraZero-1)
  748.  PosYFinestraZero=PosYFinestraZeroAngoloOpposto
  749.  PosYFinestraZero-(LunYFinestraZero-1)
  750. Case "BOTTOM-LEFT"
  751.  PosXFinestraZeroAngoloOpposto=PosXFinestraZero+(LunXFinestraZero-1)
  752.  PosYFinestraZero=PosYFinestraZeroAngoloOpposto
  753.  PosYFinestraZero-(LunYFinestraZero-1)
  754. End Select
  755.  
  756. CloseWindow 0
  757.  
  758. AggiustaDimensioniFinestraZero{}
  759. ApriFinestraZero{}
  760.  
  761. XAllarme=InnerWidth-1-AltezzaFont/2
  762. YAllarme=InnerHeight-1-AltezzaFont/2
  763. RaggioMassimoCerchio=AltezzaFont/2
  764. SetZone 0,XAllarme,YAllarme,RaggioMassimoCerchio
  765.  
  766. Repeat
  767.  EventoFinestraZero.l=Event
  768.  
  769.  Select EventoFinestraZero
  770.  Case #HaiCambiatoLeDimensioniDellaFinestra
  771.   AltezzaFont=InnerHeight/2
  772.   If AltezzaFont<4 Then AltezzaFont=4
  773.   LunXFinestraZero=WindowWidth
  774.   LunYFinestraZero=WindowHeight
  775.   RaggioMassimoCerchio=AltezzaFont/2
  776.   LoadFont 0,FontOrologio$,AltezzaFont
  777.   WindowFont 0
  778.   WCls ColoreSfondo
  779.  Case #HaiPremutoUnTastoDelTopo
  780.   Select MButtons
  781.   Case 1
  782.    If StatoAllarme=On AND Zone(WMouseX,WMouseY)=0
  783.     StatoAllarme=Off
  784.    Else
  785.     PrecedenteFontOrologio$=FontOrologio$
  786.     PrecedenteAltezzaFont.b=AltezzaFont
  787.     PrecedenteColoreSfondo=ColoreSfondo
  788.  
  789.     Impostazioni{}
  790.  
  791.     Use Window 0
  792.  
  793.     FinestraZeroAggiornata.b=False
  794.     If FontOrologio$<>PrecedenteFontOrologio$ OR AltezzaFont<>PrecedenteAltezzaFont
  795.      LoadFont 0,FontOrologio$,AltezzaFont
  796.      WindowFont 0
  797.  
  798.      DataDiOggi{}
  799.  
  800.      LunXFinestraZero=WLeftOff+LunghezzaDataDiOggi+WTopOff+2
  801.      LunYFinestraZero=WTopOff+AltezzaFont*2+4
  802.  
  803.      CloseWindow 0
  804.  
  805.      AggiustaDimensioniFinestraZero{}
  806.  
  807.      ApriFinestraZero{}
  808.  
  809.      FinestraZeroAggiornata=True
  810.     EndIf
  811.     If FinestraZeroAggiornata=False
  812.      If PosXFinestraZero<>WindowX-WLeftOff OR PosYFinestraZero<>WindowY-WTopOff
  813.       CloseWindow 0
  814.  
  815.       AggiustaDimensioniFinestraZero{}
  816.  
  817.       ApriFinestraZero{}
  818.      EndIf
  819.     EndIf
  820.     XAllarme=InnerWidth-1-AltezzaFont/2
  821.     YAllarme=InnerHeight-1-AltezzaFont/2
  822.     RaggioMassimoCerchio=AltezzaFont/2
  823.     RaggioCerchio=RaggioMassimoCerchio
  824.     SetZone 0,XAllarme,YAllarme,RaggioMassimoCerchio
  825.    EndIf
  826.    If ColoreSfondo<>PrecedenteColoreSfondo Then WCls ColoreSfondo
  827.   End Select
  828.   FlushEvents #HaiPremutoUnTastoDelTopo
  829.  End Select
  830.  
  831.  DataDiOggi$=Date$(SystemDate)
  832.  
  833.  DataDiOggi{}
  834.  
  835.  XData.w=(InnerWidth-LunghezzaDataDiOggi)/2
  836.  WColour ColoreTesto,ColoreSfondo
  837.  WLocate XData,0
  838.  Print DataDiOggi$
  839.  
  840.  OraDiOggi$="  "+Str$(Hours/10)
  841.  OraDiOggi$+Str$(Hours MOD 10)+":"
  842.  OraDiOggi$+Str$(Mins/10)
  843.  OraDiOggi$+Str$(Mins MOD 10)+":"
  844.  OraDiOggi$+Str$(Secs/10)
  845.  OraDiOggi$+Str$(Secs MOD 10)+"  "
  846.  LunghezzaOraDiOggi.w=TextLength_(RastPortFinestra,&OraDiOggi$,Len(OraDiOggi$))
  847.  XOra.w=(InnerWidth-LunghezzaOraDiOggi)/2
  848.  WLocate XOra,AltezzaFont
  849.  Print OraDiOggi$
  850.  
  851.  OraDiOggi$=StripTrail$(StripLead$(OraDiOggi$,32),32)
  852.  
  853.  Minuti.b=Val(Mid$(OraDiOggi$,4,2))
  854.  If Minuti=0
  855.   If OraSuonata.b=False
  856.    Ora.b=Val(Left$(OraDiOggi$,2)) MOD 12
  857.    If Ora=0 Then Ora=12
  858.   EndIf
  859.   If Ora>0
  860.    BeepScreen 0
  861.    Ora-1
  862.    OraSuonata=True
  863.   EndIf
  864.  Else
  865.   If OraSuonata=True Then OraSuonata=False
  866.  EndIf
  867.  
  868.  If StatoAllarme=On
  869.   If Left$(OraDiOggi$,5)=OraAllarme$ Then BeepScreen 0
  870.   WCircle XAllarme,YAllarme,RaggioCerchio,ColoreTesto
  871.  EndIf
  872.  
  873.  If EventoFinestraZero<>#HaiChiusoLaFinestra Then Delay_ 50
  874.  
  875.  If StatoAllarme=On
  876.   WCircle XAllarme,YAllarme,RaggioCerchio,ColoreSfondo
  877.   RaggioCerchio+1
  878.   If RaggioCerchio>RaggioMassimoCerchio Then RaggioCerchio=1
  879.  EndIf
  880. Until EventoFinestraZero=#HaiChiusoLaFinestra
  881. End
  882.